Skip to content

feat(ci): real E2E, Point-to-Point and Unit tests - #108

Merged
hyperpolymath merged 1 commit into
mainfrom
feat/e2e-p2p-unit-tests
Jul 29, 2026
Merged

feat(ci): real E2E, Point-to-Point and Unit tests#108
hyperpolymath merged 1 commit into
mainfrom
feat/e2e-p2p-unit-tests

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Replaces the un-instantiated e2e.yml scaffold (jobs: present, every block commented out) with a workflow that runs echidnabot's actual suites, mapped to the taxonomy:

Suite Category Tests
smoke Part I §8 Smoke 8
property_tests §9 Property-based 12
lifecycle §7 Lifecycle 24
integration_tests §2 Point-to-Point 32
seam_test §3 End-to-End 15

Two measured facts drive its shape.

1. echidnabot cannot build standalone. Cargo.toml declares a path dependency on gitbot-shared-context at ../../shared-context, which lives in gitbot-fleet. A fresh clone fails resolution outright. So this checks out both repos and places echidnabot at bots/echidnabot — the layout that resolves, and the one the fleet already uses to vendor it. A cargo metadata step asserts the layout before building, so a broken layout fails loudly rather than as a confusing compile error thousands of lines later.

2. The --lib unit tests hang — >20 min, exit 124 — while every integration binary passes in ~2s. The suites are named explicitly rather than running a bare cargo test, which would hang the runner. That exclusion is written into the step summary on every run, so the debt stays visible instead of disappearing behind a green tick.

Verified: YAML parses, actionlint clean, and the pinned Swatinem/rust-cache SHA was checked against the API before use — this estate has 80 fabricated SHAs circulating and a shape-only linter cannot tell them apart.

🤖 Generated with Claude Code

Replaces the un-instantiated e2e.yml scaffold (jobs: present, every block
commented out) with a workflow that runs echidnabot's actual test suites, mapped
to the taxonomy in standards/testing-and-benchmarking/TESTING-TAXONOMY.adoc:

  smoke             -> Part I §8  Smoke              (8 tests)
  property_tests    -> Part I §9  Property-based    (12 tests)
  lifecycle         -> Part I §7  Lifecycle         (24 tests)
  integration_tests -> Part I §2  Point-to-Point    (32 tests)
  seam_test         -> Part I §3  End-to-End        (15 tests)

TWO measured facts drive the shape of this file.

1. echidnabot CANNOT BUILD STANDALONE. Cargo.toml declares a path dependency on
   gitbot-shared-context at ../../shared-context, which lives in
   hyperpolymath/gitbot-fleet. A fresh clone of echidnabot alone fails
   dependency resolution outright. So the workflow checks out gitbot-fleet and
   places echidnabot at bots/echidnabot -- the layout that resolves, and the one
   the fleet already uses to vendor this bot. A cargo-metadata step asserts the
   layout BEFORE building, so a broken layout fails loudly rather than as a
   confusing compile error thousands of lines later.

2. The --lib unit tests HANG -- no completion in 20 minutes, exit 124. Every
   integration binary passes in about two seconds (91 tests total). The suites
   are therefore named explicitly rather than invoking a bare cargo test, which
   would hang the runner.

   That exclusion is STATED, not hidden: the job writes the hang into the step
   summary on every run, so the debt stays visible instead of quietly vanishing
   behind a green tick.

Verified: YAML parses, actionlint clean, and the pinned Swatinem/rust-cache SHA
was checked to resolve against the API before use -- this estate has 80
fabricated SHAs in circulation and a shape-only linter cannot tell them apart.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Comment thread .github/workflows/e2e.yml
@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved 1 resolved / 1 findings

Replaces the placeholder e2e workflow with a functional CI pipeline running the actual smoke, property, lifecycle, integration, and seam test suites. Consider explicitly pinning the Rust toolchain version to match the careful action SHA pinning.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

✅ 1 resolved
Quality: Rust toolchain unpinned despite pinned action SHAs

📄 .github/workflows/e2e.yml:62-76
The workflow pins action SHAs and the rust-cache version carefully but never installs a Rust toolchain (e.g. dtolnay/rust-toolchain), so cargo metadata and cargo test run against whatever compiler the ubuntu-latest image happens to ship that day. This makes builds non-reproducible and can silently change behavior when GitHub bumps the runner image. Add a pinned toolchain setup step before the cache/build steps to match the reproducibility bar the rest of the file sets.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

⚠️ Gitar auto-approved this PR but could not enable auto-merge: auto-merge is disabled for this repository — enable "Allow auto-merge" in the repository settings.

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR and enabled auto-merge (configure)

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Jul 29, 2026
@hyperpolymath
hyperpolymath merged commit bbf8ab6 into main Jul 29, 2026
37 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the feat/e2e-p2p-unit-tests branch July 29, 2026 07:29
hyperpolymath added a commit that referenced this pull request Jul 29, 2026
Resolve conflict by keeping e2e.yml from main (PR #108 added functional e2e.yml).

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant